// 请求模块
import axios from 'axios'
import store from '@/store'
import JSONBig from 'json-bigint'

// JSONBig.parse() 把json格式字符串转换为javascript对象

// 需要时需要把BigNumber 类型的数据转为字符串使用
// jsonbIg.stringify() 把avascript对象转换为json格式字符串

const request = axios.create({
    baseURL: 'api',
    transformResponse: [function (data) {
        try {
            return JSONBig.parse(data)
        } catch (err) {
            return data
        }

        // axios 默认会在内部这样来处理后端返回的数据
        // return JSON.parse(data)
    }]
})


// 请求拦截器
request.interceptors.request.use(function (config) {
    // / 请求发起会经过这里
  // config：本次请求的请求配置对象
    const{user} = store.state
    if(user && user.token){
        config.headers.Authorization = `Bearer ${store.state.user.token }`
    }
    // / 注意：这里务必要返回 config 配置对象，否则请求就停在这里出不去了
    return config
}, function (error) {
     // 如果请求出错了（还没有发出去）会进入这里
    return Promise.reject(error)
})
// 响应拦截器

export default request